//考试科目数据集。
Ext.define("ES.store.CatalogStore",{
    //继承基类。
    extend:"Ext.data.Store",
    //数据模型。
    model:"ES.model.CatalogModel",
    //每页数据。
    pageSize:20,
    //远程排序。
    remoteSort:true,
    //自动加载。
    autoLoad:false,
    //代理。
    proxy:{
        type:"ajax",
        url:"Catalog!list.action",
        reader:{
            type:"json",
            root:"dataSource.entityList",
            totalProperty:"dataSource.totalCounts"
        },
        listeners:{
            //异常处理。
            exception:function(proxy, resp, operation, opt){
                    Ext.MessageBox.show({
                        title:"远程异常",
                        msg:operation.getError(),
                        icon:Ext.MessageBox.ERROR,
                        buttons:Ext.Msg.OK
                    });
                }
        }
    },
    //事件侦听。
    listeners:{
        //加载数据前。
        beforeload:function(store, operation){
            Ext.getBody().mask("正在加载数据，请稍后...");
            Ext.apply(store.proxy.extraParams,{
                ascProperty:"CatalogName",
                asc:false
            });
        },
        //加载数据。
        load:function(){
            Ext.getBody().unmask();
        },
        //更新数据。
        update:function(store, record){
            var currPage = store.currentPage;
            Ext.Ajax.request({
                url:"CatalogEdit!update.action",
                params:{
                    catalogID:record.get("catalogID"),
                    parentCatalogID:record.get("parentCatalogID"),
                    catalogCode:record.get("catalogCode"),
                    catalogName:record.get("catalogName"),
                    catalogType:record.get("catalogType"),
                    description:record.get("description")
                },
                method:"POST",
                success:function(){
                    store.removeAll();
                    store.loadPage(currPage);
                }
            });
        },
        //删除数据。
        remove:function(store, record){
            var currPage = store.currentPage;
            Ext.Ajax.request({
                   url:"CatalogEdit!delete.action",
                   params:{
                        catalogID:record.get("catalogID")
                   },
                   method:"POST",
                   success:function(){
                    store.removeAll();
                    store.loadPage(currPage);
                 }
              });
        }
    }
})